package org.biblicalcontent.gbsbijbel.internal.entities;

import javax.jdo.annotations.Index;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import org.biblicalcontent.gbsbijbel.model.ITekst;

/**
 * 
 *
 */
@Entity
@Table(name = "TEKST")
public class Tekst implements ITekst {

	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "tekst_seq")
	@SequenceGenerator(name = "tekst_seq", initialValue = 1, allocationSize = 1)
	private Integer tekstId;

	private Integer tekstnummer;

	private Integer bijbelboekId;

	@Index(name = "IDX_TEKST_BIJ_HOOFDSTUK")
	private Integer hoofdstukId;

	private Integer hoofdstuknummer;

	@Index(name = "IDX_TEKST")
	@Column(columnDefinition = "TEXT")
	private String tekst;

	@Column(columnDefinition = "TEXT")
	private String opmaakTekst;

	private String perikoopTitel;

	public Tekst(Integer tekstId, Integer tekstnummer, Integer bijbelboekId, Integer hoofdstuknummer, String tekst,
			String opmaakTekst, String perikoopTitel) {
		this.tekstId = tekstId;
		this.tekstnummer = tekstnummer;
		this.tekst = tekst;
		this.hoofdstuknummer = hoofdstuknummer;
		this.bijbelboekId = bijbelboekId;
		this.opmaakTekst = opmaakTekst;
		this.perikoopTitel = perikoopTitel;
	}

	@SuppressWarnings("unused")
	private Tekst() {

	}

	@Override
	public Integer getHoofdstukId() {
		return hoofdstukId;
	}

	public void setHoofdstukId(Integer hoofdstukId) {
		this.hoofdstukId = hoofdstukId;
	}

	@Override
	public String getOpmaakTekst() {
		return opmaakTekst;
	}

	@Override
	public Integer getTekstId() {
		return tekstId;
	}

	@Override
	public Integer getTekstnummer() {
		return tekstnummer;
	}

	@Override
	public Integer getBijbelboekId() {
		return bijbelboekId;
	}

	@Override
	public Integer getHoofdstuknummer() {
		return hoofdstuknummer;
	}

	@Override
	public String getTekst() {
		return tekst;
	}

	@Override
	public String getPerikoopTitel() {
		return perikoopTitel;
	}

	@Override
	public TekstSleutel getLogischeSleutel() {
		return new TekstSleutel(bijbelboekId, hoofdstuknummer, tekstnummer);
	}

	@Override
	public String toString() {
		return String.format("%s %s : %s %s (opmaak: %s)", bijbelboekId.toString(), hoofdstuknummer.toString(),
				tekstnummer.toString(), tekst, opmaakTekst);
	}
}
